package adventure.room;

import java.util.ArrayList;

import adventure.placeable.Item;
import adventure.placeable.Mobile;
import adventure.placeable.trigger.Trigger;
import player.Player;

/**
 *
 * @author Michael Hanns
 *
 */
public interface Room {

    // Getters
    public String getTitle();

    public String getDescription();

    public String getLitTitle();

    public String getLitDescription();

    public String getYouSee(int playerID);

    public int getSpawnLevel();

    public boolean isLowLight();

    public boolean lightPresent();

    public boolean isClosed(char dir);

    public boolean isLocked(char dir);

    public boolean isBlocked(char dir);

    public int getCurrencyContents();

    public Item getItem(String item);

    public int getItemIDAtPosition(int pos);
    
    public boolean hasContent();

    public boolean hasItem(int id, int quantity);

    public boolean hasMobile(int id, int quantity);

    public boolean hasTrigger(int id, int quantity);

    public Item takeItem(String item);

    public Mobile getMobile(String mob);
    
    public Mobile getMobileAtPosition(int pos);

    public int getMobileIDAtPosition(int pos);

    public Trigger getTrigger(String trigger);

    public int getTriggerIDAtPosition(int pos);
    
    public boolean repops();

    public boolean tickPassed();

    public int getTicksUntilRepop();

    public Player getPlayer(String player);

    public ArrayList<Mobile> getAggroMobs(int p);

    public int takeCurrencyAmount(int amount);

    public int takeAllCurrency();

    public void addCurrencyAmount(int amount);

    public void open(char dir);

    public void close(char dir);

    public boolean closeableExit(char dir);

    public void unlock(char dir);

    public void aggroAllMobs();

    public String aggroMobsAttack(int p);
    
    public String[][] aggroGroupsAttack(int p);

    public void stopFighting(Player p);

    public String returnTriggerOutput(RoomManager r, Player triggerP, String input);

    public String decayEmptyCorpses();
    
    public String decayTempItems();

    public void playerEnters(Player p);

    public void playerLeaves(Player p);

    public Room cloneThis();
}
